package jp.fsoriented.toishi;

import java.lang.Thread.UncaughtExceptionHandler;

import jp.fsoriented.toishi.util.L;
import android.app.Application;

import com.deploygate.sdk.DeployGate;

public class App extends Application {

	@Override
	public void onCreate() {
		super.onCreate();
		DeployGate.install(this, null, true);

		// 現在設定されている UncaughtExceptionHandler を退避
		final UncaughtExceptionHandler savedUncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
		// キャッチされなかった例外発生時の処理を設定する
		Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {
			private volatile boolean mCrashing = false;

			@Override
			public void uncaughtException(Thread thread, Throwable ex) {
				if (mCrashing) {
					return;
				}
				mCrashing = true;

				// 終了処理
				L.e("uncaught@" + thread.getName(), ex);

				savedUncaughtExceptionHandler.uncaughtException(thread, ex);
			}
		});
	}

}
